package compilador.semantico.comando;

import compilador.Command;
import compilador.CommandException;
import compilador.semantico.Atributo;
import compilador.semantico.GerenciadorDeContexto;
import compilador.semantico.SemanticException;
import compilador.semantico.Variavel;

public class VerificaColecaoCommand implements Command {

	@Override
	public void run(String... args) throws CommandException {
		GerenciadorDeContexto pilha = GerenciadorDeContexto.getInstance();
		
		Variavel var = pilha.top();
		if( !var.temFilhos() ) {
			if(!var.temParametros()) {
				Atributo att = (Atributo) var;
				if (!att.ehColecao()) {
					throw new SemanticException("Operador -> so pode ser usado em colecoes; " + var.getNome() + " nao eh uma colecao!");
				}
			} else {
				// tratar metodos que podem retornar colecoes
			}
		} else {
			throw new SemanticException("Operador -> so pode ser usado em colecoes; " + var.getNome() + " nao eh uma colecao!");
		}
	}

}
